Embodiments described herein relate generally to switch fabrics and more particularly, for example, to the synchronization of distributed switch fabrics such as Clos networks.
Clos networks are multi-stage switch networks that provide non-blocking connections between multiple input ports and multiple output ports. A non-blocking network is a network in which a data path through the network can always be established between an idle input port and an idle output port.
A three-stage Clos network, for example, has a middle stage connected between an input stage and an output stage. Each stage includes multiple modules. Each input stage module has multiple input ports and is operatively coupled to each middle stage module. Similarly, each output stage module has multiple output ports and is connected to each middle stage module.
A switch fabric having input stage modules with a large number of input ports, output stage modules with a large number of output ports and/or a large number of modules within each stage, has many connections. Thus, a large number of cables can be used to connect the modules within the switch fabric. If the cables have varying lengths, the amount of time a cell takes to pass through the switch fabric can vary. This can cause an output port to receive cells from the switch fabric in an incorrect order.
Thus, a need exists for an apparatus and method to automatically determine and compensate for the amount of time a cell takes to pass between modules associated with stages of the switch fabric. Additionally, a need exists for an apparatus and method to ensure that an output port of a switch fabric receives cells from the switch fabric in a correct order.